import { customRef } from 'vue'

/**
 * 控件的直接输入，不需要防抖。负责父子组件交互表单值
 * @param { object } props 组件的 props
 * @param { object } emit 组件的 emit
 * @param { string } name v-model的名称，默认 modelValue，用于emit
 */
export default function emitRef (props, emit = () => {}, name = 'modelValue') {
  
  return customRef((track, trigger) => {
    return {
      get () {
        track()
        let mode= props.extend.mode||props.mod
        let retValue=props[name];
        if(mode==='multiple'&&!retValue){
          return []
        }
        return retValue // 返回 modelValue 的值
      },
      set (val) {
        trigger()
        emit(`update:${name}`, val) // 通过 emit 设置 modelValue 的值
      }
    }
  })
}
